package com.ash.service.message;

import com.ash.domain.Message;
import com.ash.domain.vo.MessageVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.lang.Nullable;

import java.util.List;

/**
 * @author : Chen Chao
 * @encoding : UTF-8
 * @date : 2021/4/3 20:21
 * @file : project06.com.ash.service.message.MessageService.java
 * @software : IntelliJ IDEA
 * @since : 1.8
 */
public interface MessageService {
    /**
     * 添加公告
     * @param message 发布公告
     * @return 受影响行数
     */
    Integer add(Message message);
    /**
     * 根据角色类型进行分页查找公告
     * @param rid 角色类型
     * @param startPage 开始页
     * @param size 每页大小
     * @return 公告列表
     */
    List<MessageVo> selectByRole
    (@Nullable @Param("rid") Integer rid,
     @Nullable @Param("startPage") Integer startPage,
     @Nullable @Param("size") Integer size);
    /**
     * 根据rid查询数据总数
     * @param rid 要查询的rid
     * @return 返回所有的数据总数
     */
    Integer dataCount (@Nullable @Param("rid")Integer rid);
    /**
     * 根据aid进行删除操作
     * @param mid  id
     * @return 受影响行数
     */
    int delete(int mid);
    /**
     * 根据id进行批量删除
     * @param ids 穿过去的id列表
     * @return 返回受影响行数
     */
    int deleteByIds(@Param("ids") List<Integer> ids);
    /**
     * 根据收信人id进行分页查询
     * @param toId 来信id
     * @param hadRead  是否已读
     * @param page 页号
     * @param limit  页面容量
     * @return 返回信息列表
     */
    List<MessageVo> selectByToId
    (@Param("toId")Integer toId,
     @Nullable@Param("hadRead")Byte hadRead,
     @Nullable @Param("page") Integer page,
     @Nullable @Param("limit") Integer limit);
    /**
     * 根据收信人id查询所有的数据总数
     * @param toId 来信id
     * @param hadRead  是否已读
     * @return 返回信息总数量
     */
    Integer selectByToIdCount
    (@Param("toId")Integer toId,
     @Nullable@Param("hadRead")Byte hadRead);
    /**
     * 修改信息已读状况
     * @param ids  要修改已读状况的信息
     * @param toId  用户id
     * @return 受影响的行数
     */
    Integer update(@Param("ids") List<Integer> ids,@Param("toId") Integer toId);


}
